package config

import (
	"os"

	"github.com/spf13/pflag"
)

type config struct {
	GoNum    int //
	Elapsed  int // time.second
	URL      string
	Tag      string
	GET      bool
	POST     bool
	PostData string
}

var Cfg = config{}

func Init() {
	initLogger()
	initParamter()
}

func initParamter() {
	pflag.IntVarP(&Cfg.GoNum, "gonum", "g", 1, "开启的GO协程数")
	pflag.IntVarP(&Cfg.Elapsed, "elapsed", "e", 1, "运行多长时间，单位秒")
	pflag.StringVarP(&Cfg.URL, "url", "u", "", "请求的URL地址")
	pflag.StringVarP(&Cfg.Tag, "tag", "t", "success", "成功标志 [在返回结果中检测]")
	pflag.BoolVarP(&Cfg.GET, "GET", "G", true, "HTTP-GET请求")
	pflag.StringVarP(&Cfg.PostData, "data", "d", "", "HTTP-POST请求，提交的数据内容")
	pflag.Parse()
	if Cfg.GoNum <= 0 {
		Cfg.GoNum = 1
	}
	if Cfg.Elapsed <= 0 {
		Cfg.Elapsed = 1
	}
	if Cfg.URL == "" {
		Log.Errorf("需要指定URL地址, -h for more help")
		os.Exit(1)
	}
	if pflag.CommandLine.Changed("data") {
		Cfg.POST = true
		Cfg.GET = false
	}
	Log.Printf("go routine: %d", Cfg.GoNum)
	Log.Printf("elapsed time: %d", Cfg.Elapsed)
	Log.Printf("request url: %s", Cfg.URL)
	if Cfg.GET {
		Log.Printf("request method: %s", "GET")
	}
	if Cfg.POST {
		Log.Printf("request method: %s", "POST")
	}
}
